<?php
class LocalEvento extends Zend_Db_Table {
    protected $_name 	= 'local_evento';
    protected $_primary = 'id_local';

    public function __construct(){
		parent::__construct();
		$this->inicializar();
    }
    
    private function inicializar(){
    	$this->id_local 			= NULL;
    	$this->ds_local 			= NULL;
    	$this->ds_endereco			= NULL;
    	$this->ds_numero			= NULL;
    	$this->ds_complemento		= NULL;
    	$this->ds_bairro			= NULL;
    	$this->cidade				= new Cidade();
    	$this->ds_caixa_postal		= NULL;
  		$this->estado 				= new Estado();
  		$this->pais 				= new Pais();
  		$this->id_usuario_exc		= null;
  		$this->dt_exclusao			= null;
    }

    public function populate($array){
    	$filter    = new Zend_Filter();
		$this->id_local			= trim($filter->filter($array['id_local']));
		$this->ds_local 		= trim($filter->filter($array['ds_local']));
		$this->ds_endereco  	= trim($filter->filter($array['ds_endereco']));
		$this->ds_numero 		= trim($filter->filter($array['ds_numero']));
		$this->ds_complemento 	= trim($filter->filter($array['ds_complemento']));
		$this->ds_bairro 		= trim($filter->filter($array['ds_bairro']));
		$this->ds_caixa_postal	= trim($filter->filter($array['ds_caixa_postal']));
        if ($array['id_cidade']!=null){
    		$this->cidade->load($array['id_cidade']);
			$this->estado->load($this->cidade->id_estado);
			$this->pais->load($this->estado->id_pais);
        }	
		return $this;
    }
    
	public function load($id){
    	$row = $this->find($id)->current();
    	$this->populate($row);
    }

    public function salvar(){
    	$dados = array('id_local'			=>$this->id_local,
					   'ds_local'			=>$this->ds_local,
    				   'ds_endereco'		=>$this->ds_endereco,
    				   'ds_numero'	    	=>$this->ds_numero,
					   'ds_complemento'	    =>$this->ds_complemento,
    				   'ds_bairro'	    	=>$this->ds_bairro,
					   'ds_caixa_postal'	=>$this->ds_caixa_postal,
					   'id_cidade' 			=>$this->cidade->id_cidade,
    				   'id_usuario_exc'		=>$this->id_usuario_exc,
    				   'dt_exclusao'		=>$this->dt_exclusao);
    	if ($this->id_local == null){
			$this->local = $this->insert($dados);
    	}
    	else {
    		$where = "id_local = " . $this->id_local;
			$this->update($dados, $where);
    	}
		return $this->id_local;
    }

    public function buscar($ds_local, $id_cidade, $id_estado, $order, $asc){
    	$db  = Zend_Registry::get('db');
    	$sql = 'select ds_local,
    				   ds_estado,
    				   ds_cidade,
    				   id_local id,
    				   concat(ds_local, " (", ds_cidade,"-", ds_sigla, ")") local,
    				   ds_pais
    			  from local_evento l,
    			  	   cidade		c,
    			  	   estado		e,
    			  	   pais			p
    			 where l.id_cidade=c.id_cidade
    			   and c.id_estado=e.id_estado
    			   and p.id_pais=e.id_pais
    			   and l.dt_exclusao is null';
    	if ($ds_local!=NULL){
    		$sql .=' and ds_local like("%'.$ds_local.'%")';
    	}
    	if ($id_cidade>0){
    		$sql.=' and l.id_cidade='.$id_cidade;
    	}
        if ($id_estado>0){
    		$sql.=' and e.id_estado='.$id_estado;
    	}
		$orderBy = "asc";
		if($asc == 1){
			$orderBy = "desc";
		}
		$sql .= " order by " . $order . " ".$orderBy;
    	return $db->query($sql);
    }

  	public function excluir($id, $usuario=null){
    	$where = "id_local=".$id;
    	try {
    		$this->delete($where);
    	} catch (Exception $e) {
    		if ($e->getCode()=='23000'){ // Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails
    			$this->load($id);
        		$this->dt_exclusao      = date('Y-m-d H:m:s');
    			$this->id_usuario_exc	= $usuario;
    			$this->salvar();    	
    			$this->inicializar();		
    		}
    	}   	
    }


}